home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
oper_sys
/
oasis
/
oasisegs.lha
/
egs
/
queena.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-23
|
1KB
|
55 lines
#define MAX 800
#define N 10
int size;
int count = 0;
int all[MAX][N];
int q[N];
void queen(n)
int n;
{
int i, m;
if (n == size) {
for (i = 0; i < size; i++)
all[count][i] = q[i];
count++;
}
else for (m = 0; m < size; m++)
if (safe(m,n)) {
q[n] = m;
queen(n+1);
}
}
int safe(m,n)
int m, n;
{
int i;
for (i = 1; i <= n; i++) {
int x = q[n-i];
if (m == x || m == x+i || m == x-i)
return 0;
}
return -1;
}
void main(argc, argv)
int argc;
char *argv[];
{
int i, k;
size = atoi(argv[1]);
queen(0);
printf("count = %d\n", count);
/*
for (k = 0; k < count; k++) {
for (i = 0; i < size; i++)
printf("%4d", all[k][i]);
putchar('\n');
}
*/
}